//#define _CRT_SECURE_NO_WARNINGS 1
//
//#include<iostream>
//#include<vector>
//using namespace std;
//
//int func(int x)
//{
//    if (x % 2 == 0)
//    {
//        return x / 2;
//    }
//    else
//    {
//        return (x + 1) / 2;
//    }
//
//}
//int main()
//{
//    int t, n;
//    int mx = 0;
//    cin >> t >> n;
//    vector<int> res;
//    for (int i = 0; i < t; i++)
//    {
//        int count = 0;
//        for (int j = 0; j < n; j++)
//        {
//            int tmp;
//            cin >> tmp;
//            count += tmp;
//            mx = max(tmp, mx);
//        }
//        if (count - mx > 4)
//        {
//            res.push_back(3);
//        }
//        else
//        {
//            func(count - mx);
//            res.push_back(mx);
//        }
//        mx = 0;
//    }
//    for (auto e : res)
//    {
//        cout << e << endl;
//    }
//    return 0;
//}
#include<iostream>
#include<vector>
using namespace std;
int func(int x, int y)
{
    if (x % y == 0)
    {
        return x / y;
    }
    else
    {
        return x / y + 1;
    }

}
int main()
{
    int n;
    
    int count = 0;
    cin >> n;
    vector<int> vin(n,0);
    for (int i = 0; i < n; i++)
    {
        cin >> vin[i];
    }
    for (int i = 0; i < n; i++)
    {
        count += vin[i];
        int mid = i / 2;
        cout << func(count, i + 1) << " ";
    }
    cout << endl;
    for (int i = 0; i < n; i++)
    {
        if (i % 2 == 0)
        {
            cout << vin[i / 2] << " ";
        }
        else
        {
            cout << (vin[i / 2] + vin[i / 2 + 1]) / 2 << " ";
        }
    }
    cout << endl;
    return 0;
}